]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
system: Emulate click action button release
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 16 Jun 2017 15:08:07 +0000 (17:08 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 13 Jul 2017 10:27:47 +0000 (12:27 +0200)
Since commit 2c070d38, we add a ClickAction to the visible AltSwitcher
button to track long-presses. As a result, we now have two components
that will grab and ungrab the pointer for the button, so to make sure
we don't end up with a stuck grab, we need to release the second's
component grab when the first activates.

Currently we only drop the StButton grab on long-press, we also need
to cancel any initiated long-press on click.

https://bugzilla.gnome.org/show_bug.cgi?id=781738

js/ui/status/system.js

index 92ccf4c484b481d48b765f2488f164407c05cd66..8f99865e6e3590c8d3bfda2579202ffa1d8f0f6d 100644 (file)
@@ -42,9 +42,15 @@ const AltSwitcher = new Lang.Class({
     _init: function(standard, alternate) {
         this._standard = standard;
         this._standard.connect('notify::visible', Lang.bind(this, this._sync));
+        if (this._standard instanceof St.Button)
+            this._standard.connect('clicked',
+                                   () => { this._clickAction.release(); });
 
         this._alternate = alternate;
         this._alternate.connect('notify::visible', Lang.bind(this, this._sync));
+        if (this._alternate instanceof St.Button)
+            this._alternate.connect('clicked',
+                                    () => { this._clickAction.release(); });
 
         this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));